package com.hk.model.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.models.auth.In;
import io.swagger.v3.oas.models.security.SecurityScheme;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 商机分页查询视图对象，用于封装和传输与商机查询相关的展示数据。
 * 包含了商机的创建信息、基本属性、分配信息、时间计划以及其他相关属性，
 * 方便前端展示和处理商机相关的查询结果。
 *
 * @author [你的姓名]
 * @date [具体日期]
 */
@Data
public class BusinessPageQueryVO implements Serializable {

    /**
     * 创建人
     */
    private String createBy;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新人
     */
    private String updateBy;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 商机ID
     */
    private Integer id;

    /**
     * 商机相关人员姓名
     */
    private String name;

    /**
     * 联系电话
     */
    private String phone;

    /**
     * 渠道标识
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Integer channel;

    /**
     * 活动ID
     */
    private Object activityId;

    /**
     * 活动名称
     */
    private String activityName;

    /**
     * 活动详情信息
     */
    private Object activityInfo;

    /**
     * 性别标识
     */
    private Integer sex;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 微信号
     */
    private String weixin;

    /**
     * QQ号
     */
    private String qq;

    /**
     * 级别标识
     */
    private String level;

    /**
     * 学科标识
     */
    private String subject;

    /**
     * 状态标识
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Integer status;

    /**
     * 分配人
     */
    //TODO:   与指配人相关的负责人沟通， 确定字段来源
    private String assignBy;

    /**
     * 分配时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime assignTime;

    /**
     * 归属人
     */
    private String owner;

    /**
     * 归属时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime ownerTime;

    /**
     * 被扔回公海次数记录
     */
    private Integer falseCount;

    /**
     * 下次跟进时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private LocalDateTime nextTime;

    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;

    /**
     * 用户ID
     */
    private Object userId;

    /**
     * 转账相关信息
     */
    private Object transfer;

    /**
     * 省份
     */
    private String provinces;

    /**
     * 城市
     */
    private String city;

    /**
     * 地区（省_市格式）
     */
    private String region;

    /**
     * 课程ID
     */
    private Integer courseId;

    /**
     * 职业标识
     */
    private String occupation;

    /**
     * 教育程度标识
     */
    private String education;

    /**
     * 工作岗位标识
     */
    private String job;

    /**
     * 薪资标识
     */
    private String salary;

    /**
     * 专业标识
     */
    private String major;

    /**
     * 期望薪资标识
     */
    private String expectedSalary;

    /**
     * 学习原因
     */
    private String reasons;

    /**
     * 职业计划
     */
    private String plan;

    /**
     * 计划时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime planTime;

    /**
     * 其他意向
     */
    private String otherIntention;

    /**
     * 线索ID
     */
    private Object clueId;

    /**
     * 开始创建时间（查询条件相关）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime beginCreateTime;

    /**
     * 结束创建时间（查询条件相关）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endCreateTime;
}